# 指定文件编码为UTF-8
# coding: utf-8

# 导入sys和os模块，用于系统相关操作
import sys, os

# 将父目录添加到系统路径，以便导入父目录中的模块
sys.path.append(os.pardir)  # 为了导入父目录的文件而进行的设定

# 导入NumPy数值计算库
import numpy as np

# 从dataset.mnist模块导入load_mnist函数
from dataset.mnist import load_mnist

# 导入PIL库的Image模块，用于图像处理
from PIL import Image

# 定义图像显示函数
def img_show(img):
    # 将NumPy数组转换为PIL图像对象，并确保数据类型为8位无符号整数
    pil_img = Image.fromarray(np.uint8(img))
    # 显示图像
    pil_img.show()

# 加载MNIST数据集
# flatten=True将图像展平为一维数组
# normalize=False不进行归一化处理
(x_train, t_train), (x_test, t_test) = load_mnist(flatten=True, normalize=False)

# 获取训练集的第一个图像和标签
img = x_train[0]
label = t_train[0]

# 打印第一个图像的标签
print(label)  # 5

# 打印图像的形状（展平后）
print(img.shape)  # (784,)

# 将展平的图像重新调整为28x28的二维数组
img = img.reshape(28, 28)  # 把图像的形状变为原来的尺寸

# 打印调整后的图像形状
print(img.shape)  # (28, 28)

# 调用自定义函数显示图像
img_show(img)
